malloc Doubles Ruby Memory
https://www.speedshop.co/2017/12/04/malloc-doubles-ruby-memory.html
RubyのWebアプリケーションやSidekipプロセスは1プロセスあたり多くて1GB付近のメモリを使用する
診断とデバグが難しいのはフラグメンテーション
フラグメンテーションによるメモリ増加はしばしばメモリリークと間違われるが、違いがある
フラグメンテーションによるメモリ増加は対数的 (logarithmic)
メモリリークは線形
通常、C extensionのバグで引き起こされる
Rubyではメモリ上でオブジェクトを移動することはできない
Rubyオブジェクトへの生のポインタを保持しているC言語拡張が壊れてしまう可能性があるため
メモリ内でオブジェクトを移動できなければ、断片化は避けられない
これはRubyに限らず、C言語プログラムではよくある問題